Vision-based driver monitoring systems capture a video image of the driver's face, and process the image to detect and track the driver's eyes in order to assess drive gaze or drowsiness. See, for example, the U.S. Pat. Nos. 5,795,306; 5,878,156; 5,926,251; 6,097,295; 6,130,617; 6,243,015; 6,304,187; and 6,571,002, incorporated herein by reference. A key indicator for assessing driver drowsiness is the pattern of eye closure, and various techniques have been devised for classifying the open vs. closed state of the driver's eye. One approach for determining eye state is to train a classification algorithm or network using training examples depicting a variety of human subjects imaged under varying conditions. When the classifier correctly classifies the eye state for all of the training examples, it can be used to accurately classify the eye state of other similar test examples. However, the eye state characteristics of a video image can be relatively complex, and it is difficult to develop an easily implemented classifier that is capable of high accuracy. A neural network or support vector machine can be used to achieve the required classification accuracy, but such classifiers are relatively complex and require substantial processing capability and memory, which tends to limit their usage in cost-sensitive applications.
It has been demonstrated that genetic programming principles can be used to develop reasonably accurate classifiers that are less costly to implement than neural network classifiers. Genetic programming uses certain features of biological evolution to automatically construct classifier programs from a defined set of possible arithmetic and logical functions. The constructed classifier programs are used to solve numerous training examples, and performance metrics (fitness measures) are used to rate the classification accuracy. The most accurate programs are retained, and then subjected to genetic alteration in a further stage of learning. The objective is to discover a single program that provides the best classification accuracy, and then to use that program as a classifier. Detailed descriptions of genetic algorithms and genetic programming are given in the publications of John H. Holland and John R. Koza, incorporated herein by reference. See in particular: Adaptation in Artificial and Natural Systems (1975) by Holland; and Genetic Programming: On the Programming of Computers by Means of Natural Selection (1992) and Genetic Programming II: Automatic Discovery of Reusable Programs (1994) by Koza.
Another less complex alternative to neural networks, known generally as ensemble learning, involves training a number of individual classifiers and combining their outputs. A particularly useful ensemble learning technique known as AdaBoost (adaptive boosting) adaptively influences the selection of training examples in a way that improves the weakest classifiers. Specifically, the training examples are weighted for each classifier so that training examples that are erroneously classified by a given classifier are more likely to be selected for further training than examples that were correctly classified.